using CoreManager.Models.DTOs;

namespace CoreManager.Services.System
{
    /// <summary>
    /// 系统监控服务接口
    /// </summary>
    public interface ISystemMonitorService
    {
        /// <summary>
        /// 获取系统监控数据
        /// </summary>
        /// <returns>系统监控数据</returns>
        Task<SystemMonitorDto> GetSystemMonitorDataAsync();

        /// <summary>
        /// 获取进程列表
        /// </summary>
        /// <param name="top">获取前N个进程，默认20</param>
        /// <returns>进程列表</returns>
        Task<List<ProcessInfoDto>> GetProcessListAsync(int top = 20);

        /// <summary>
        /// 获取系统告警列表
        /// </summary>
        /// <returns>告警列表</returns>
        Task<List<SystemAlertDto>> GetSystemAlertsAsync();

        /// <summary>
        /// 获取操作系统信息
        /// </summary>
        /// <returns>操作系统信息</returns>
        Task<OperatingSystemInfo> GetOperatingSystemInfoAsync();

        /// <summary>
        /// 获取CPU信息
        /// </summary>
        /// <returns>CPU信息</returns>
        Task<CpuInfo> GetCpuInfoAsync();

        /// <summary>
        /// 获取内存信息
        /// </summary>
        /// <returns>内存信息</returns>
        Task<MemoryInfo> GetMemoryInfoAsync();

        /// <summary>
        /// 获取磁盘信息
        /// </summary>
        /// <returns>磁盘信息</returns>
        Task<DiskInfo> GetDiskInfoAsync();

        /// <summary>
        /// 获取网络信息
        /// </summary>
        /// <returns>网络信息</returns>
        Task<NetworkInfo> GetNetworkInfoAsync();
    }
}
